iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Software Development

C#世界初探險系列 第 12

2022鐵人賽 Day 12 規則與不規則陣列

  • 分享至 

  • xImage
  •  

宣告多維陣列時,其維度是否相同分為下面兩種:規則陣列不規則陣列
阿規則陣列又稱矩陣陣列,是屬於二維陣列,規則陣列是指每列的陣列元素都相同。
之前已經介紹過用法了,所以就不多說了
那我們來說說不規則陣列
C#提供一個建立特殊的二維陣列,陣列中的每一列長度可以不相同,稱為不規則陣列(Jagged Array)或稱非矩陣陣列。所謂的不規則陣列就是陣列中還可以存放陣列,每一列的長度不同,可以用來建立每列不同長度的表格。至於之前說的規則陣列,因為長度一致,所以可以用來建立一般表格。不規則陣列的語法如下:

資料型態[][] 陣列名稱 = new 資料型態[陣列大小][];

建立不規則陣列如下:

//先宣告一個不規則陣列。如宣告一個名為a的不規則陣列,此不規則陣列有3列
int[][] a = new int[3][];
//接著分別設定不規則陣列每列陣列的大小,如將第0、1、2列分別配置3、4、5個陣列元素
a[0] = new int[3];
a[1] = new int[4];
a[2] = new int[5];

經過上面宣告所建立的不規則陣列如下:

不規則陣列

那我們來做個小練習,今天有3小組,第一組3個人,第二組4個人,第三組2個人,每個人成績平均如下,求各組平均成績和總平均為多少?

第一人 第二人 第三人 第四人
第一組 60 70 80 -
第二組 40 90 70 55
第三組 30 100 - -
            //建立不規則陣列
            double[][] score = new double[3][];
            //建立 score[0][0] ~ score[0][2] 陣列元素
            score[0] = new double[] { 60, 70, 80 };
            //建立 score[1][0] ~ score[2][3] 陣列元素
            score[1] = new double[] { 40, 90, 70, 55 };
            //建立 score[2][0] ~ score[2][1] 陣列元素
            score[2] = new double[] { 30, 100 };
            //建立 group[0] ~ group[2] 來存放各組的名稱
            string[] group = new string[] { "第一組", "第二組", "第三組" };
            //建立 average[0] ~ average[2] 來存放各組的平均成績
            double[] average = new double[] { 0.0, 0.0, 0.0 };
            //總平均成績
            double total_average = 0, total = 0;
            Console.WriteLine("\t第一人\t第二人\t第三人\t第四人");
            for(int i = 0; i < score.Length; i++)
            {
                Console.Write(group[i]);
                double sum = 0;
                for(int j = 0; j < score[i].Length; j++)
                {
                    //顯示各組的成績
                    Console.Write("\t{0}", score[i][j]);
                    //計算各組的平均成績
                    sum += score[i][j];
                    average[i] = sum / (j + 1);
                }
                //計算總平均成績
                total += average[i];
                total_average = total / (i + 1);
                Console.WriteLine();
            }
            for(int i = 0; i < group.Length; i++)
                Console.WriteLine("{0}平均成績:{1}分", group[i], average[i].ToString());
            Console.WriteLine("總平均成績:{0}分", total_average.ToString());

不規則陣列練習

今天就先到這邊為止啦~
掰掰


上一篇
2022鐵人賽 Day 11 foreach
下一篇
2022鐵人賽 Day 13 結構與結構陣列
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言